import os
from common import qwen


def create_directory_structure(response, base_path='./'):
    """
    根据给定的响应文本创建目录结构和文件。

    :param response: 包含目录结构和文件名的响应文本
    :param base_path: 基础路径，默认为当前目录
    :return: (file_list, query_content) 其中 file_list 是生成的文件路径列表，query_content 是文件名列表
    """
    lines = response.split('\n')
    current_dir_level_1 = None
    current_dir_level_2 = None
    file_list = []
    query_content = []

    for line in lines:
        line = line.strip()
        if line.startswith('###'):
            # 一级目录
            first_name = line.replace('### ', '').strip()
            current_dir_level_1 = os.path.join(base_path, first_name)
            os.makedirs(current_dir_level_1, exist_ok=True)
            current_dir_level_2 = None
        elif line.endswith('**'):
            # 二级目录
            if current_dir_level_1:
                second_name = line.replace('**', '').strip()
                current_dir_level_2 = os.path.join(current_dir_level_1, second_name)
                os.makedirs(current_dir_level_2, exist_ok=True)
        elif line.startswith('-'):
            # 文件名
            if current_dir_level_2:
                file_name = line.replace('-', '').strip() + '.md'
                file_path = os.path.join(current_dir_level_2, file_name)
                with open(file_path, 'w') as f:
                    f.write('')  # 创建空文件
                file_list.append(file_path)
                query_content.append(line.replace('-', '').strip())
    return file_list, query_content


def get_from_already_directory_structure(base_path):
    """
    从已存在的目录结构中获取文件路径和文件名。

    :param base_path: 基础路径
    :return: (file_list, query_content) 其中 file_list 是已存在的文件路径列表，query_content 是文件名列表
    """
    file_list = []
    query_content = []
    for root, dirs, files in os.walk(base_path):
        for file in files:
            if file.endswith('.md'):
                file_path = os.path.join(root, file)
                file_list.append(file_path)
                query_content.append(file[:-3])  # 去掉.md后缀
    return file_list, query_content


def entry(title):
    """
    主入口函数，根据给定的学习主题生成目录结构。

    :param title: 学习主题
    :return: (file_list, query_content) 其中 file_list 是生成的文件路径列表，query_content 是文件名列表
    """
    response = qwen.get_ai_response(
        "我想学习{}，帮我列一下学习路线,生成格式如 {} 这个是个例子，目录格式是这样即可".format(title, text))
    res = response.replace("/", " ")
    print(f"初始响应: {res}")
    file_list, query_content = create_directory_structure(res, './')
    return file_list, query_content


# 示例用法
text = """
### 基础篇
1.**简介**
   - 历史
   - 特点
   - 应用领域
2.**环境搭建**
   - 安装与配置
   - 安装与使用
3.**基本语法**
   - 注释
   - 变量和数据类型
   - 运算符
   - 输入输出
"""
